package biz.almas.uycnr.crawler.utils;

/**
 * UKK UNICODE
 * 
 * @Description: 下面定义类，用来实现对源文件的转换，即把阿拉伯哈萨克文转换成斯拉伏哈克文
 * @Copyright: Copyright (c) 2015 XinJiang Almas Software All Rights Reserved
 * @Company: XinJiang Almas Software
 * @author Ansar786 Sep 8, 2015
 * @version V1.0
 * @history:
 * 
 */
public class KzWordConvertUtil {

	public static String wordconvert(String word) {
		boolean belgi = false;
		boolean belgi1 = false;
		char prechar = ' ';
		StringBuilder lastword = new StringBuilder();

		if (word != "")// 外层IF开始
		{
			char ch = word.charAt(0);
			if (ch == 'ء') {
				belgi = true;
			}

			if (belgi == true)// 第二层IF开始
			{
				char ch2 = word.charAt(1);
				switch (ch2) {
				case 'ا':
					lastword.append('ә');
					break;
				case 'ى':
					lastword.append('і');
					break;
				case 'و':
					lastword.append('ө');
					break;
				case 'ۇ':
					lastword.append('ү');
					break;
				}
				belgi = false;
				// 将word字符串前两个字符去掉
				word = word.substring(2, word.length());
			}

			for (char ch1 : word.toCharArray()) {

				belgi1 = false;
				if (prechar == 'ي' && ch1 == 'ۋ') {
					lastword = lastword.deleteCharAt(lastword.length()-1);
					lastword.append('ю');
					belgi1 = true;
				}
				if (prechar == 'ي' && ch1 == 'ا') {
					lastword = lastword.deleteCharAt(lastword.length()-1);
					lastword.append('я');
					belgi1 = true;
				}
				if (prechar == 'ش' && ch1 == 'ش') {
					lastword = lastword.deleteCharAt(lastword.length()-1);
					lastword.append('щ');
					belgi1 = true;
				}

				if (belgi1 == false) {
					switch (ch1) {
					// 下面是小写字母的转换
					case 'ا':
						lastword.append('а');
						break;
					case 'ب':
						lastword.append('б');
						break;
					case 'ۆ':
						lastword.append('в');
						break;
					case 'گ':
						lastword.append('г');
						break;
					case 'ع':
						lastword.append('ғ');
						break;
					case 'د':
						lastword.append('д');
						break;
					case 'ە':
						lastword .append('е');
						break;
					case 'ج':
						lastword.append('ж');
						break;
					case 'ز':
						lastword.append('з');
						break;
					case 'ي':
						lastword.append('й');
						break;
					case 'ك':
						lastword.append('к');
						break;
					case 'ق':
						lastword.append('қ');
						break;
					case 'ل':
						lastword.append('л');
						break;
					case 'م':
						lastword.append('м');
						break;
					case 'ن':
						lastword.append('н');
						break;
					case 'ڭ':
						lastword.append('ң');
						break;
					case 'و':
						lastword.append('о');
						break;
					case 'پ':
						lastword.append('п');
						break;
					case 'ر':
						lastword.append('р');
						break;
					case 'س':
						lastword.append('с');
						break;
					case 'ت':
						lastword.append('т');
						break;
					case 'ۋ':
						lastword.append('у');
						break;
					case 'ۇ':
						lastword.append('ұ');
						break;
					case 'ف':
						lastword.append('ф');
						break;
					case 'ح':
						lastword.append('х');
						break;
					case 'ھ':
						lastword.append('һ');
						break;
					case 'چ':
						lastword.append('ч');
						break;
					case 'ش':
						lastword.append('ш');
						break;
					case 'ٵ':
						lastword.append('ә');
						break;
					case 'ٶ':
						lastword.append('ө');
						break;
					case 'ى':
						lastword.append('ы');
						break;
					// 下面是用来转换标点符号
					case '.':
						lastword.append('.');
						break;
					case '،':
						lastword.append(',');
						break;
					case '"':
						lastword.append('"');
						break;
					case '؛':
						lastword.append(';');
						break;
					case ':':
						lastword.append(':');
						break;
					case '!':
						lastword.append('!');
						break;
					case '؟':
						lastword.append('?');
						break;
					case '(':
						lastword.append('(');
						break;
					case ')':
						lastword.append(')');
						break;
					case '-':
						lastword .append('-');
						break;
					// case '-': lastword += '–';
					// break;
					case '«':
						lastword.append('«');
						break;
					case '»':
						lastword.append('»');
						break;
					case '\r':
						lastword.append('\r');
						break;
					case '\n':
						lastword.append('\n');
						break;
					// 以下代码用来转换数字符号
					case '0':
						lastword.append('0');
						break;
					case '1':
						lastword.append('1');
						break;
					case '2':
						lastword.append('2');
						break;
					case '3':
						lastword.append('3');
						break;
					case '4':
						lastword.append('4');
						break;
					case '5':
						lastword.append('5');
						break;
					case '6':
						lastword.append('6');
						break;
					case '7':
						lastword.append('7');
						break;
					case '8':
						lastword.append('8');
						break;
					case '9':
						lastword.append('9');
						break;

					default:
						lastword.append(ch);
						break;

					}
				}
				prechar = ch1;
			}

		}// 外层IF结束
		
		return lastword.toString();

	}

	// 用来将原文件转换成目标文件，返回结果是一个string
	public static String toSelawen(String text) {
		StringBuilder word = new StringBuilder();
		StringBuilder constring = new StringBuilder();
		StringBuilder result = new StringBuilder();
		char curchar = ' ';

		// read the character and place in string
		int i;
		for (i = 0; i < text.length(); i++) {
			curchar = text.charAt(i);
			if ("\u0020".charAt(0) == curchar || "\u2028".charAt(0) == curchar
					|| "\u2029".charAt(0) == curchar) {
				word = constring;
				result = result.append(wordconvert(word.toString()));
				result.append(curchar);
				constring = new StringBuilder();
			} else {
				constring.append(curchar);
			}

		}

		result = result.append(wordconvert(constring.toString()));

		return result.toString();

	}

	public static void main(String[] args) {
		String str="كەن بايلىعىن، وندىرىلگەن ءتۇستى مەتالدارىن جەردەگى «جىلان جول»، اۋە جول، سۋجول ارقىلى مەكەن يەلەرىنە بۇيىرتپاي، الىپ ايداعار مەن ايۋدىڭ جۇتقىنشاعىنا جۇتىلىپ كەتىپ جاتقانىن دا جازۋشى استارلى بەينەلەيدى.بۇل روماننىڭ ءتورتىنشى ءبىر تابىسى – ۇلت ازعىندارى مەن قۇلشىلدىق، ماڭگۇرتتىك، ساتقىندىقتى اياۋسىز ماسقارالاۋ.";
		System.out.println(toSelawen(str));
	}
}
